import { Dep } from "./dep.js"

// export let watchers = []

/**
 * 这是vue1.0 版本的实现思路, 这里每一个响应式的数据都需要进行 watcher 处理 
 * 所以这里收集 依赖的时候 是在编译阶段,每一个被编译到的内容都要进行一个收集
 */
export const Watcher = class {
  constructor(vm, key, updateFn) {
    this.$vm = vm
    this.$key = key
    this.$updateFn = updateFn
    // 将我当前实例加入到 watchers 数组中
    // watchers.push(this)
    // 执行更新函数 
    // this.update()

    Dep.target = this
    // 这个时候,调用一些 get
    this.$vm[this.$key]
    Dep.target = null
  }
  update() {
    // 注意这里的执行,肯定是需要,调用外面的参数这样
    this.$updateFn.call(this.$vm, this.$vm[this.$key])
  }
} 